package javachongkao.编程基础.判断三角形类型;

import java.util.Scanner;
//7-37 NCHU_判断三角形类型
//输入三角形三条边，判断该三角形为什么类型的三角形。
//
//输入格式:
//在一行中输入三角形的三条边的值（实型数），可以用一个或多个空格或回车分隔，其中三条边的取值范围均为[1,200]。
//
//输出格式:
//（1）如果输入数据非法，则输出“Wrong Format”；
//（2）如果输入数据合法，但三条边不能构成三角形，则输出“Not a triangle”；
//（3）如果输入数据合法且能够成等边三角形，则输出“Equilateral triangle”；
//（3）如果输入数据合法且能够成等腰直角三角形，则输出“Isosceles right-angled triangle”；
//（5）如果输入数据合法且能够成等腰三角形，则输出“Isosceles triangle”；
//（6）如果输入数据合法且能够成直角三角形，则输出“Right-angled triangle”；
//（7）如果输入数据合法且能够成一般三角形，则输出“General triangle”。
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double a = scanner.nextDouble();
        double b = scanner.nextDouble();
        double c = scanner.nextDouble();

        // 检查输入是否合法
        if (a < 1 || a > 200 || b < 1 || b > 200 || c < 1 || c > 200) {
            System.out.println("Wrong Format");
            return;
        }

        // 检查是否能构成三角形
        if (a + b <= c || a + c <= b || b + c <= a) {
            System.out.println("Not a triangle");
            return;
        }

        // 判断三角形类型
        if (a == b && b == c) {
            System.out.println("Equilateral triangle");
        } else if (a == b || b == c || a == c) {
            // 检查是否为等腰直角三角形
            if (isRightAngled(a, b, c)) {
                System.out.println("Isosceles right-angled triangle");
            } else {
                System.out.println("Isosceles triangle");
            }
        } else if (isRightAngled(a, b, c)) {
            System.out.println("Right-angled triangle");
        } else {
            System.out.println("General triangle");
        }
    }

    // 检查是否为直角三角形
    private static boolean isRightAngled(double a, double b, double c) {
        double[] sides = {a, b, c};
        java.util.Arrays.sort(sides);
        // 使用勾股定理判断
        return Math.abs(sides[0] * sides[0] + sides[1] * sides[1] - sides[2] * sides[2]) < 1e-6;
    }
}
